//package com.wy.service;
//
//import java.util.List;
//import java.util.Map;
//
//import org.nutz.dao.Cnd;
//import org.nutz.dao.Sqls;
//import org.nutz.dao.util.cri.Exps;
//
//import com.hbdh.model.RoleButton;
//import com.hbdh.model.RoleMenu;
//import com.hbdh.utils.ListUtils;
//
///**
// * @apiNote 
// * @author ParadiseWY
// * @date 2019年9月3日
// */
//public class RoleService {
//	/**
//	 * 获取分配权限的数据列表
//	 * @param roleId 角色编号
//	 * @return list
//	 */
//	public List<Map<String, Object>> getPermiss(String roleId) {
//		List<Map<String, Object>> menus = getChildMenu(roleId, "0");
//		getPermiss(roleId, menus);
//		return menus;
//	}
//
//	/**
//	 * 递归查询角色菜单的下级菜单按钮数据
//	 * @param roleId 角色编号
//	 * @param maps 上次结果集
//	 */
//	private void getPermiss(String roleId, List<Map<String, Object>> maps) {
//		if (ListUtils.isBlank(maps)) {
//			return;
//		}
//		for (Map<String, Object> map : maps) {
//			String menuId = (String) map.get("MenuID");
//			if (Integer.parseInt(map.get("BtnNum").toString()) > 0) {
//				map.put("Button", getMenuButton(roleId, menuId));
//			}
//			if (Integer.parseInt(map.get("ChildNum").toString()) > 0) {
//				List<Map<String, Object>> childs = getChildMenu(roleId, menuId);
//				getPermiss(roleId, childs);
//				map.put("Child", childs);
//			}
//		}
//	}
//
//	/**
//	 * 根据角色编号和菜单编号获得下级菜单
//	 * @param rid 角色编号
//	 * @param mid 菜单编号
//	 * @return list
//	 */
//	private List<Map<String, Object>> getChildMenu(String roleId, String menuId) {
//		String sql = "select a.MenuID,a.MenuName,(select count(*) from HBYXJC..ti_Button b where "
//				+ " b.MenuID = a.MenuID) BtnNum,(select count(*) from HBYXJC..ti_Menu c where "
//				+ " c.ParentID = a.MenuID) ChildNum,isnull((select 1 from HBYXJC..tr_Role_Menu d "
//				+ " where d.MenuID = a.MenuID and d.RoleID = @roleId), 0) IsCheck from HBYXJC..ti_Menu "
//				+ " a where a.ParentID = @menuId order by a.SortIndex";
//		return abstractDao.getMaps(Sqls.create(sql).setParam("menuId", menuId).setParam("roleId", roleId));
//	}
//
//	/**
//	 * 根据角色编号和菜单编号获得按钮编号
//	 * @param rid 角色编号
//	 * @param mid 菜单编号
//	 * @return list
//	 */
//	private List<Map<String, Object>> getMenuButton(String roleId, String menuId) {
//		String sql = "select b.ButtonID,b.BtnName,isnull((select 1 from HBYXJC..tr_Role_Button a"
//				+ " where a.ButtonID = b.ButtonID and a.RoleID = @roleId),0) IsCheck from "
//				+ " HBYXJC..ti_Button b where b.MenuID = @menuId order by b.SortIndex";
//		return abstractDao.getMaps(Sqls.create(sql).setParam("menuId", menuId).setParam("roleId", roleId));
//	}
//
//	/**
//	 * 保存分配权限的信息
//	 * @param roleId 角色编号
//	 * @param data 数据
//	 */
//	public void savePermiss(String roleId, List<Map<String, Object>> data) {
//		getBaseDao().clear(RoleMenu.class, Cnd.where(Exps.eq("RoleID", roleId)));
//		getBaseDao().clear(RoleButton.class, Cnd.where(Exps.eq("RoleID", roleId)));
//		savePermisss(roleId, data);
//	}
//
//	/**
//	 * 保存为菜单分配的权限
//	 * @param roleId 角色编号
//	 * @param menus 数据
//	 */
//	@SuppressWarnings("unchecked")
//	private void savePermisss(String roleId, List<Map<String, Object>> datas) {
//		if (ListUtils.isBlank(datas)) {
//			return;
//		}
//		for (Map<String, Object> map : datas) {
//			Integer menuCheck = (Integer) map.get("IsCheck");
//			if (menuCheck != null && menuCheck == 1) {
//				getBaseDao().insert(RoleMenu.builder().RoleID(roleId).MenuID(map.get("MenuID").toString()).build());
//				List<Map<String, Object>> buttons = (List<Map<String, Object>>) map.get("Button");
//				if (ListUtils.isNotBlank(buttons)) {
//					for (Map<String, Object> btn : buttons) {
//						Integer btnCheck = (Integer) btn.get("IsCheck");
//						if (btnCheck != null && btnCheck == 1) {
//							getBaseDao().insert(RoleButton.builder().RoleID(roleId)
//									.ButtonID(btn.get("ButtonID").toString()).build());
//						}
//					}
//				}
//			}
//			List<Map<String, Object>> child = (List<Map<String, Object>>) map.get("Child");
//			savePermisss(roleId, child);
//		}
//	}
//}
